#include <iostream>
#include <fcntl.h>    // 包含 O_WRONLY
#include <sys/stat.h> // 包含 mkfifo
#include <unistd.h>   // 包含 write, close
#include <cstring>    // 包含 strlen
using namespace std;

int main() {
    const char* fifoPath = "./myfifo"; // 命名管道文件路径

    // 创建命名管道，权限为 0666 (rw-rw-rw-)
    if (mkfifo(fifoPath, 0666) == -1) {
        perror("mkfifo");
        return 1;
    }

    // 打开命名管道的写端
    int fd = open(fifoPath, O_WRONLY);
    if (fd == -1) {
        perror("open");
        return 2;
    }

    // 写入数据
    const char* message = "Hello from writer!";
    write(fd, message, strlen(message) + 1); // 写入带字符串结束符的数据
    cout << "Writer: Sent message to reader." << endl;

    // 关闭写端
    close(fd);
    return 0;
}
